use std::{fs::File, io::Read};

use anyhow::Result;


pub fn get_reader(input : &str) -> Result<Box<dyn Read>>{
    let reader: Box<dyn Read> = if input == "-" {
        // 从 标准输入 读取
       Box::new(std::io::stdin())
    } else {
        // 从 文件 读取
        Box::new(File::open(input)?)
    };
    Ok(reader)
}

pub fn input_to_buffer(input : &str) -> anyhow::Result<String> {
    let mut reader: Box<dyn Read> = if input == "-" {
        // 从 标准输入 读取
       Box::new(std::io::stdin())
    } else {
        // 从 文件 读取
        Box::new(File::open(input)?)
    };
    
    let mut buffer = String::new();
    reader.read_to_string(&mut buffer)?;
   
    let buffer = buffer.trim().to_string();
    Ok(buffer)
}